<HTML>
<HEAD>
<META name="description"
	content="Violet UML Editor cross format document" />
<META name="keywords" content="Violet, UML" />
<META charset="UTF-8" />
<SCRIPT type="text/javascript">
	function switchVisibility() {
		var obj = document.getElementById("content");
		obj.style.display = (obj.style.display == "block") ? "none" : "block";
	}
</SCRIPT>
</HEAD>
<BODY>
	This file was generated with Violet UML Editor 2.1.0.
	&nbsp;&nbsp;(&nbsp;<A href=# onclick="switchVisibility()">View Source</A>&nbsp;/&nbsp;<A href="http://sourceforge.net/projects/violet/files/violetumleditor/" target="_blank">Download Violet</A>&nbsp;)
	<BR />
	<BR />
	<SCRIPT id="content" type="text/xml"><![CDATA[<ClassDiagramGraph id="1">
  <nodes id="2">
    <InterfaceNode id="3">
      <children id="4"/>
      <location class="Point2D.Double" id="5" x="170.0" y="20.0"/>
      <id id="6" value="a9a3b24c-6b04-44c3-b105-30328fe22e3a"/>
      <revision>1</revision>
      <backgroundColor id="7">
        <red>255</red>
        <green>255</green>
        <blue>255</blue>
        <alpha>255</alpha>
      </backgroundColor>
      <borderColor id="8">
        <red>0</red>
        <green>0</green>
        <blue>0</blue>
        <alpha>255</alpha>
      </borderColor>
      <textColor reference="8"/>
      <name id="9" justification="1" size="3" underlined="false">
        <text>&lt;interface&gt;
LocaleResolver</text>
      </name>
      <methods id="10" justification="0" size="4" underlined="false">
        <text>resolveLocale(req) : Locale
setLocale(req, resp, locale:Locale) : void</text>
      </methods>
    </InterfaceNode>
    <ClassNode id="11">
      <children id="12"/>
      <location class="Point2D.Double" id="13" x="170.0" y="160.0"/>
      <id id="14" value="0c1766cf-686d-4064-8341-54d299c6de21"/>
      <revision>1</revision>
      <backgroundColor reference="7"/>
      <borderColor reference="8"/>
      <textColor reference="8"/>
      <name id="15" justification="1" size="3" underlined="false">
        <text>LocaleChangeInterceptor</text>
      </name>
      <attributes id="16" justification="0" size="4" underlined="false">
        <text>+ DEFAULT_PARAM_NAME = &quot;locale&quot;
- paramName = DEFAULT_PARAM_NAME
</text>
      </attributes>
      <methods id="17" justification="0" size="4" underlined="false">
        <text>getter, setter
+ preHandle(req, resp, handler) : boolean</text>
      </methods>
    </ClassNode>
  </nodes>
  <edges id="18"/>
</ClassDiagramGraph>]]></SCRIPT>
	<BR />
	<BR />
	<IMG alt="embedded diagram image" src="
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
RK5C" />
</BODY>
</HTML>